home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 15 / Amiga Plus Leser CD 15.iso / Tools / Development / CIT.v4 / citra / CITGadget.h < prev    next >
Encoding:
C/C++ Source or Header  |  2002-03-13  |  5.1 KB  |  187 lines

  1. //
  2. //                    CITGadget include
  3. //
  4. //                          StormC
  5. //
  6. //                     version 2002.02.02
  7. //
  8.  
  9. #ifndef CIT_GADGET_H
  10. #define CIT_GADGET_H TRUE
  11.  
  12. #include <intuition/gadgetclass.h>
  13. #include <gadgets/layout.h>
  14. #include <images/label.h>
  15.  
  16. #include "CITRootClass.h"
  17.  
  18. //
  19. // These three enums are for internal use
  20. //
  21. enum
  22. {
  23.   CITGADGET_ID = 0,
  24.   CITGADGET_POSITION_X,
  25.   CITGADGET_POSITION_Y,
  26.   CITGADGET_WIDTH,
  27.   CITGADGET_HEIGHT,
  28.   CITGADGET_DISABLED,
  29.   CITGADGET_SELECTED,
  30.   CITGADGET_TEXT,
  31.   CITGADGET_RELVERIFY,
  32.   CITGADGET_FOLLOWMOUSE,
  33.   CITGADGET_TABCYCLE,
  34.   CITGADGET_GADGETHELP,
  35.   CITGADGET_READONLY,
  36.   CITGADGET_UNDERSCORE,
  37.   CITGADGET_TEXTATTR,
  38.   CITGADGET_LAST
  39. };
  40.  
  41. enum
  42. {
  43.   CITGADLABEL_FONT,
  44.   CITGADLABEL_FOREGROUNDPEN,
  45.   CITGADLABEL_BACKGROUNDPEN,
  46.   CITGADLABEL_MODE,
  47.   CITGADLABEL_SOFTSTYLE,
  48.   CITGADLABEL_JUSTIFICATION,
  49.   CITGADLABEL_TEXT,
  50.   CITGADLABEL_LAST
  51. };
  52.  
  53. enum
  54. {
  55.   CITGADCHILD_MINWIDTH,
  56.   CITGADCHILD_MINHEIGHT,
  57.   CITGADCHILD_MAXWIDTH,
  58.   CITGADCHILD_MAXHEIGHT,
  59.   CITGADCHILD_NOMINALSIZE,
  60.   CITGADCHILD_WEIGHTEDWIDTH,
  61.   CITGADCHILD_WEIGHTEDHEIGHT,
  62.   CITGADCHILD_WEIGHTMINIMUM,
  63.   //CITGADCHILD_SCALEDWIDTH,
  64.   //CITGADCHILD_SCALEDHEIGHT,
  65.   CITGADCHILD_LAST
  66. };
  67.  
  68.  
  69. class CITGadget:public CITRootClass
  70. {
  71.   public:
  72.     CITGadget();
  73.     ~CITGadget();
  74.  
  75.     void Position(int x,int y);
  76.     void Size(int w, int h);
  77.     void Disabled(BOOL b = TRUE)
  78.       {setGadgetTag(CITGADGET_DISABLED,GA_Disabled,b);}
  79.     void Selected(BOOL b = TRUE)
  80.       {setGadgetTag(CITGADGET_SELECTED,GA_Selected,b);}
  81.     void Activate();
  82.     void Text(char* t)
  83.       {setGadgetTag(CITGADGET_TEXT,GA_Text,ULONG(t));}
  84.     void RelVerify(BOOL b = TRUE)
  85.       {setGadgetTag(CITGADGET_RELVERIFY,GA_RelVerify,b);}
  86.     void FollowMouse(BOOL b = TRUE)
  87.       {setGadgetTag(CITGADGET_FOLLOWMOUSE,GA_FollowMouse,b);}
  88.     void TabCycle(BOOL b = TRUE)
  89.       {setGadgetTag(CITGADGET_TABCYCLE,GA_TabCycle,b);}
  90.     void GadgetHelp(BOOL b = TRUE)
  91.       {setGadgetTag(CITGADGET_GADGETHELP,GA_GadgetHelp,b);}
  92.     void ReadOnly(BOOL b = TRUE)
  93.       {setGadgetTag(CITGADGET_READONLY,GA_ReadOnly,b);}
  94.     void Underscore(char c)
  95.       {setGadgetTag(CITGADGET_UNDERSCORE,GA_Underscore,c);}
  96.  
  97.     void MinWidth(ULONG w)
  98.       {setChildTag(CITGADCHILD_MINWIDTH,CHILD_MinWidth,w);}
  99.     void MinHeight(ULONG h)
  100.       {setChildTag(CITGADCHILD_MINHEIGHT,CHILD_MinHeight,h);}
  101.     void MaxWidth(ULONG w)
  102.       {setChildTag(CITGADCHILD_MAXWIDTH,CHILD_MaxWidth,w);}
  103.     void MaxHeight(ULONG h)
  104.       {setChildTag(CITGADCHILD_MAXHEIGHT,CHILD_MaxHeight,h);}
  105.     void NominalSize(BOOL b = TRUE)
  106.       {setChildTag(CITGADCHILD_NOMINALSIZE,CHILD_NominalSize,b);}
  107.     void WeightedWidth(ULONG w)
  108.       {setChildTag(CITGADCHILD_WEIGHTEDWIDTH,CHILD_WeightedWidth,w);}
  109.     void WeightedHeight(ULONG h)
  110.       {setChildTag(CITGADCHILD_WEIGHTEDHEIGHT,CHILD_WeightedHeight,h);}
  111.     void WeightMinimum(BOOL b = TRUE)
  112.       {setChildTag(CITGADCHILD_WEIGHTMINIMUM,CHILD_WeightMinimum,b);}
  113.     //void ScaledWidth(UWORD w)
  114.     //  {setChildTag(CITGADCHILD_SCALEDWIDTH,CHILD_ScaledWidth,w);}
  115.     //void ScaledHeight(UWORD h)
  116.     //  {setChildTag(CITGADCHILD_SCALEDHEIGHT,CHILD_ScaledHeight,h);}
  117.  
  118.     void LabelFont(struct TextAttr* attr)
  119.       {setLabelTag(CITGADLABEL_FONT,IA_Font,ULONG(attr));}
  120.     void LabelForegroundPen(LONG pen)
  121.       {setLabelTag(CITGADLABEL_FOREGROUNDPEN,IA_FGPen,pen);}
  122.     void LabelBackgroundPen(LONG pen)
  123.       {setLabelTag(CITGADLABEL_BACKGROUNDPEN,IA_BGPen,pen);}
  124.     void LabelMode(UBYTE mode);
  125.     void LabelSoftStyle(UBYTE style)
  126.       {setLabelTag(CITGADLABEL_SOFTSTYLE,LABEL_SoftStyle,style);}
  127.     void LabelJustification(UWORD pos)
  128.       {setLabelTag(CITGADLABEL_JUSTIFICATION,LABEL_Justification,pos);}
  129.     void LabelText(char* text)
  130.       {setLabelTag(CITGADLABEL_TEXT,LABEL_Text,ULONG(text));}
  131.     void Id(ULONG GadgetID);
  132.  
  133.     void CallbackHook(ULONG (*p)(APTR,APTR,ULONG),ULONG userData);
  134.     void CallbackHook(void *that, void *p,ULONG userData);
  135.     
  136.     virtual void EventHandler(void (*p)(ULONG Id));
  137.     virtual void EventHandler(void *that, void *p);
  138.  
  139.   protected:
  140.     virtual BOOL Create(CITWindow* CITWd,class CITRootClass* parent);
  141.     virtual void Delete();
  142.     virtual Object* NewObjectA(TagItem* tags);
  143.  
  144.     virtual void HandleEvent(ULONG result,UWORD code);
  145.     virtual void GadgetEvent(ULONG result,UWORD code);
  146.  
  147.     virtual ULONG hookEntry(struct Hook* inputHook,APTR object,APTR msg);
  148.     virtual void  hookSetup(ULONG userData);
  149.     
  150.     struct Hook* createHook(ULONG userData);
  151.  
  152.     void *eventThat;
  153.     union
  154.     {
  155.       void (*Proc0)(ULONG Id);
  156.       void (*Proc1)(void* that,ULONG Id);
  157.     } event;
  158.  
  159.     void *callbackThat;
  160.     union
  161.     {
  162.       ULONG (*proc0)(APTR,APTR,ULONG);
  163.       ULONG (*proc1)(void* that,APTR,APTR,ULONG);
  164.     } callback;
  165.  
  166.     ULONG gadgetID;
  167.     
  168.   private:
  169.     friend ULONG cppHookEntry(struct CITHook*,APTR,APTR);
  170.  
  171.     void setGadgetTag(int index,ULONG attr,ULONG val);
  172.     void setChildTag(int index,ULONG attr,ULONG val);
  173.     void setLabelTag(int index,ULONG attr,ULONG val);
  174.     void SetUp();
  175.     void CleanUp();
  176.  
  177.     struct Hook* hook;
  178.  
  179.     TagItem* gadgetTag;
  180.     TagItem* labelTag;
  181.     TagItem* childTag;
  182. };
  183.  
  184. typedef ULONG (*CALLBACKHOOK)(APTR,APTR,ULONG);
  185.  
  186. #endif
  187.